#ifndef __CE_GFX_TEXTUREPACK_H__
#define __CE_GFX_TEXTUREPACK_H__

#include <export.h>
#include <iobject.h>
#include <gfx/enum.h>

struct iDevice;
struct iTexture;

/**
 * \addtogroup graphics
 * @{
 */

/**
 * @brief Collection of textures for the render passes and the texture units
 */
class CE_API ceTexturePack : public iObject
{
  CE_OBJECT
private:
  iTexture*   _textures[RP_Count][TS_Count];

public:
  ceTexturePack();
  virtual ~ceTexturePack ();

  void SetTexture (ceRenderPass rp, ceTextureStage stage, iTexture* texture);
  const iTexture* GetTexture (ceRenderPass rp, ceTextureStage stage) const;
  iTexture* GetTexture (ceRenderPass rp, ceTextureStage stage);

  void Bind (ceRenderPass rp, iDevice* device);
};


/** @} */

#endif /* ! __CE_GFX_TEXTUREPACK_H__ */

